package gui;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.rmi.RemoteException;
import java.text.ParseException;

import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFormattedTextField;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.text.MaskFormatter;

public class AbaEditaPerfil extends JPanel {

	private static final long serialVersionUID = 1L;

	JLabel labelTextoNome;
	JLabel labelTextoSenha;
	JLabel labelTextoTelefone;
	JLabel labelTextoEndereco;
	JLabel labelTextoRua;
	JLabel labelTextoNumero;
	JLabel labelTextoCEP;
	JLabel labelTextoComplemento;

	JTextField Nome;
	JPasswordField Senha;
	JFormattedTextField Telefone;
	JTextField Rua;
	JTextField Numero;
	JFormattedTextField CEP;
	JTextField Complemento;

	JButton buttonSalvar;
	JButton buttonCancelar;

	JPanel painelSuperior;
	JPanel painelInferior;

	JPanel painelNomeSenha;
	JPanel painelTelefone;
	JPanel painelEndereco;
	JPanel painelRua;
	JPanel painelNumeroCEP;
	JPanel painelComplemento;
	JPanel painelSaldo;

	public AbaEditaPerfil() {
		this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));

		labelTextoNome = new JLabel("Nome: ");
		labelTextoSenha = new JLabel("Senha: ");
		labelTextoTelefone = new JLabel("Telefone: ");
		labelTextoEndereco = new JLabel("Endereco: ");
		labelTextoRua = new JLabel("Rua: ");
		labelTextoNumero = new JLabel("Numero: ");
		labelTextoCEP = new JLabel("CEP: ");
		labelTextoComplemento = new JLabel("Complemento: ");

		Nome = new JTextField(10);
		Senha = new JPasswordField(15);
		MaskFormatter maskTelefone = null;
		MaskFormatter maskCep = null;
		try {
			maskTelefone = new MaskFormatter("(##) ####-####");
			maskCep = new MaskFormatter("##.###-###");
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		Telefone = new JFormattedTextField(maskTelefone);
		Telefone.setSize(50, 10);
		Rua = new JTextField(15);
		Numero = new JTextField(5);
		CEP = new JFormattedTextField(maskCep);
		Complemento = new JTextField(15);

		buttonSalvar = new JButton("Salvar");
		buttonSalvar.addActionListener(new Ouvinte());
		buttonCancelar = new JButton("Cancelar");
		buttonCancelar.addActionListener(new Ouvinte());

		painelNomeSenha = new JPanel();
		painelNomeSenha.add(labelTextoNome);
		painelNomeSenha.add(Nome);
		painelNomeSenha.add(labelTextoSenha);
		painelNomeSenha.add(Senha);

		painelTelefone = new JPanel();
		painelTelefone.add(labelTextoTelefone);
		painelTelefone.add(Telefone);

		painelEndereco = new JPanel();
		painelEndereco.add(labelTextoEndereco);

		painelRua = new JPanel();
		painelRua.add(labelTextoRua);
		painelRua.add(Rua);

		painelNumeroCEP = new JPanel();
		painelNumeroCEP.add(labelTextoNumero);
		painelNumeroCEP.add(Numero);
		painelNumeroCEP.add(labelTextoCEP);
		painelNumeroCEP.add(CEP);

		painelComplemento = new JPanel();
		painelComplemento.add(labelTextoComplemento);
		painelComplemento.add(Complemento);

		painelSuperior = new JPanel();
		painelSuperior
				.setLayout(new BoxLayout(painelSuperior, BoxLayout.Y_AXIS));
		painelSuperior.add(painelNomeSenha);
		painelSuperior.add(painelTelefone);
		painelSuperior.add(painelEndereco);
		painelSuperior.add(painelRua);
		painelSuperior.add(painelNumeroCEP);
		painelSuperior.add(painelComplemento);

		painelInferior = new JPanel();
		painelInferior.add(buttonSalvar);
		painelInferior.add(buttonCancelar);

		this.add(painelSuperior);
		this.add(painelInferior);

	}

	public void update() {
		Nome.setText(Principal.cliente.getNome());
		Senha.setText(Principal.cliente.getSenha());
		Telefone.setText(Principal.cliente.getTelefone());
		Rua.setText(Principal.cliente.getEnderecoRua());
		Numero.setText(Principal.cliente.getEnderecoNumero());
		CEP.setText(Principal.cliente.getEnderecoCep());
		Complemento.setText(Principal.cliente.getEnderecoAdicional());
	}

	class Ouvinte implements ActionListener {

		public void actionPerformed(ActionEvent arg0) {
			// TODO Auto-generated method stub

			if (arg0.getSource() == buttonSalvar) {

				try {
					String login = Principal.cliente.getLogin();
					String nome = Nome.getText();
					String senha = String.valueOf(Senha.getPassword());
					String telefone = Telefone.getText();
					String rua = Rua.getText();
					String numero = Numero.getText();
					// String adicional = Complemento.getText();
					String adicional = "Casa";
					String cep = CEP.getText();

					Principal.cliente = Principal.servidor.updateCliente(nome,
							login, senha, telefone, rua, numero, adicional,
							cep, Principal.cliente);
				} catch (RemoteException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}

				Principal.tabManager.setEnabledAt("Editar Perfil", false);
				Principal.tabManager.setEnabledAt("Perfil", true);
				JOptionPane.showMessageDialog(Principal.janela,
						"Salvo com sucesso");
				Principal.tabManager.setSelectedTab("Perfil");

			} else { // chamada veio de cancelar

				Principal.tabManager.setEnabledAt("Editar Perfil", false);
				Principal.tabManager.setEnabledAt("Perfil", true);
				Principal.tabManager.setSelectedTab("Perfil");

			}
		}
	}
}
